package abd.pr1.Controllers;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

import abd.pr1.Interface.NuevaSerieWindow;
import abd.pr1.Mappers.GenerosMapper;
import abd.pr1.Mappers.SeriesGenerosMapper;
import abd.pr1.Mappers.SeriesMapper;
import abd.pr1.Models.Genero;
import abd.pr1.Models.Serie;
import abd.pr1.Models.SerieGenero;

public class NuevaSerieWindowController  implements ActionListener{
	private NuevaSerieWindow nuevaSerieWindow;
	private DataSource ds;
	private Serie serie;
	private AdminSeriesPanelController adminSeriesPanelController;
	
	public NuevaSerieWindowController(AdminSeriesPanelController adminSeriesPanelController,NuevaSerieWindow nuevaSerieWindow,DataSource ds){
		this.nuevaSerieWindow=nuevaSerieWindow;
		this.ds=ds;
		this.nuevaSerieWindow.addListener(this);
		this.adminSeriesPanelController=adminSeriesPanelController;
		refreshGeneros();
	}
	
	public void refreshGeneros(){
		
		nuevaSerieWindow.setGeneroList(new GenerosMapper(ds).all());
		
	}
	
	
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals("guardar_serie")){
			String nombreSeries=this.nuevaSerieWindow.getNombreTexto();
			String titularSeries=this.nuevaSerieWindow.getTitularTexto();
			String sinpsisSeries=this.nuevaSerieWindow.getSinopsisTexto();
			
			int estreno=0;
			int finalizacion=0;
			
			if(this.nuevaSerieWindow.getEstreno()>=1000){
				estreno = this.nuevaSerieWindow.getEstreno();
			}
			if(this.nuevaSerieWindow.getFinalizacion()>=1000){
				finalizacion = this.nuevaSerieWindow.getFinalizacion();
			}
			
			
			List<Genero> generos=this.nuevaSerieWindow.getGeneroList();
			Serie serie=new Serie(null, nombreSeries, titularSeries, sinpsisSeries, estreno, finalizacion);
			if(new SeriesMapper(ds).insert(serie)){
				for (Genero genero : generos) {
					new SeriesGenerosMapper(ds).insert(new SerieGenero(serie.getId(), genero.getId() ));
				}
				
			}
			this.adminSeriesPanelController.refreshSerie();
			nuevaSerieWindow.dispose();
			
		} else if(e.getActionCommand().equals("cerrar_serie")){
			nuevaSerieWindow.dispose();
		}
	}
}
